#ifndef GULLAPPLICATION_H
#define GULLAPPLICATION_H



namespace gull {
	namespace core{
        //! An Empty Gull Engine Application.
        /** Gull Application class allows you to use Gull Engine, it is the start point to use Gull Engine,
         * your application have to inherite this class.
         * to start the engine
         * @author Jonathan Depiets
         * @version 0.1
         * @date 2011 03 01
         */
        
		class GullApplication {
            
            friend class GullEngine;
            friend class ApplicationManager;
		
		public:
            /** The basic constructor instanciate the engine and register himself
             * in application Manager
             */
			GullApplication();
            
            /** Destuctor release the engine*/
			virtual ~GullApplication();
			
            /** Perform some initilisations  among the engine
             @return success notification
             */
			unsigned int initApplication();
            
             /** The application launches the main loop of the engine*/
			void show();
						
		protected:
            /** The engine calls this method at each loop*/
			virtual void applicationOnLoad() const;
            
            /** The engine calls this method when the main window has been resize, 
             this method is called when a window is created
             */
			virtual void reshape(int w,int h) const;

		private:
			
		};
	}
}


#endif

